<?php
/*
$data 原始数组
$size 每页分数的数量
$getPage 获取当前页
renturn 返回产生的新数组 还有 页码
*/
function page( $data, $size ,$getPage ){

	$totalCount = count( $data ); //总条数

	$totalPages = ceil( $totalCount / $size ); //总页数

  $showPage = 3; //显示的页码数量

  $pageOffset = ( $showPage - 1 ) / 2;


	//GET到的分页的错误处理
	if( !isset( $getPage ) || $getPage == '' || intval( $getPage ) == '' || ( intval( $getPage ) > $totalPages ) || $getPage > $totalPages ){
		$page = 1;
    }else{
    	$page = $getPage;
    }

	$prePage = $page - 1; //上一页

	$nextPage = $page + 1; //下一页

	// $newData = array_slice( $data, ( $page - 1 ) * $size, $size, true);	

	$newData = array_slice( $data, ( $page - 1 ) * $size, $size, true); //截取数组，true

  	$str  = '<div class="page_s">';
    $str .= ' <ul class="pagination">';

    $str .= '   <li>';
    if( $page == 1 ){
      $str.= "<a href='JavaScript:void(0)' style='display:none;'  aria-label='Previous'><span aria-hidden='true'>&laquo;</span></a>";
    }else{
      $str.= "<a href='?page={$prePage}'><span aria-hidden='true'>&laquo;</span></a>";
    }
    $str .= '</li>';

    if( $totalPages > $showPage ){ 
      if( $page > $pageOffset + 1 ){   //如果当前页大于 偏移量 + 1 就出现省略号
         $str .= "<li><a href='javascript:void(0)'>..</a></li>";
      }
      if( $page > $pageOffset ){ //如果当前页大于偏移量
        $start = $page - $pageOffset;   //页码的起始位置就是 当前页 - 偏移量
        $end = $totalPages > $page + $pageOffset ? $page + $pageOffset : $totalPages;  
        //页码的结束尾数就是如果总页数大于 当前页码 + 偏移量 那么就显示后者 否则显示前者
      }else{  //否则如果大当前页小于等于偏移量
        $start = 1;     //起始位置为1
        //页码的结束为止就是总页码是否大于要显示的页码,是的话显示少的
        $end = $totalPages > $showPage ? $showPage : $totalPages; 
      }
      //如果当前页 + 偏移量  > 总页码的话
      if( $page + $pageOffset > $totalPages ){
        //如果说当前页++偏移量大于总页数的话
        //起始位置就要往后面推2条 也就是 当前的页码 减去当前的页码 + 偏移量 - 最有一个页码
        //例如 总工11页 当前页是10页 起始位置是8  10 + 2(偏移量) > 11(总页数) 此时$end是11
        //那么起始位置就是 8 - ( 10 + 2 - 11 ) = 7; 7 -- 11 :7 8 9 10 11 总共就显示5个咯.
        $start = $start - ( $page + $pageOffset - $end ) ;
      }
    }

    for( $i = $start; $i <= $end; $i++ ){
      if( $page == $i ){
        $str.= "<li><a href='JavaScript:void(0)' style='background-color:#EEEEEE;'>{$i}</a></li>";
      }else{
        $str.= "<li><a href='?page={$i}'>{$i}</a></li>";
      }
    }

    if( $totalPages > $showPage && $totalPages >  $page + $pageOffset ){
       $str .= "<li><a href='javascript:void(0)'>..</a></li>";
    }

    
    $str .= '<li>';
    if( $page == $totalPages ){
      $str.= "<a href='JavaScript:void(0)' style='display:none;' aria-label='Next'><span aria-hidden='true'>&raquo;</span></a>";
    }else{
      $str.= "<a href='?page={$nextPage}'><span aria-hidden='true'>&raquo;</span></a>";
    }
    $str .= '</li>';
    
    $return[] = $newData;
    $return[] = $str;
    return $return; //返回数组 数组 0 是数据 , 数组 1 是连接 显示页码
}

?>

